# 架构设计 本模块是 MicroPython 在 ESP32 上的 port,以 `Makefile` 为构建入口,通过 `BOARD=mpython|labplus-experiment-box-2024|labplus_1956|...` 选择板型,每个板型目录含 `main.c`、`mpconfigboard.h`、`mpconfigboard.mk` 及可选 `modules/`。 内部分层清晰: - `mpconfigport.h` 集中定义 MicroPython 编译开关(VFS、BLE、uSSL、machine 系列等),并通过 `MICROPY_PORT_BUILTIN_MODULES` 宏注册 C 层内置模块;`qstrdefsport.h` 管理 qstr。 - `builtins/` 存放编译进固件的 C 扩展(`modmachine.c`、`modmusic.c`、`modcodec.c`、`modrfid.c`、`esp32_nvs.c` 等),通过 `BUILTIN_C` 变量加入链接,暴露 `machine`、`music`、`audio`、`radio`、`NVS` 等 Python 接口。 - `drivers/` 提供底层外设驱动:`codec/`(Helix MP3 + libmad + ES8388 音频编解码)、`mpu6050/`(Invensense eMPL/DMP 姿态解算)、`rgbLED5x5/`(5×5 RGB 点阵图形库)、`rfid/mfrc522`、`startup/`(OLED 启动画面、I2C master)。 - `file_system/` 作为 VFS 根文件系统镜像内容,由 `make_lfs.py` 打包成 LFS2 镜像,`main.py` 为开机脚本,`lib/`、`modules/` 下为运行时加载的 Python 扩展(siot、yeelight、xunfei、smartcamera、microbit、blynklib 等第三方集成)。 - `boards/` 下各板型通过 `mpconfigboard.mk` 叠加 `sdkconfig.base`、`sdkconfig.ble`、`sdkconfig.spiram` 等片段配置 IDF Kconfig,并可选择性包含自身 `modules/` 中的 Python 包(如 `mpython/modules/mpython/educore`、`v81`、`k210`)。 - 依赖方向自顶向下:`boards/*` → `builtins/*` → `drivers/*` → ESP-IDF components;Python 层仅通过 `import` 调用 C 暴露的模块或同层 `.py` 文件,不反向依赖 C。 - 构建产物经 `release.py` 合并 bootloader.bin、partitions.bin、application.bin、vfs.bin 生成完整固件镜像,`deploy` 目标通过 esptool 烧录至 0x1000 偏移。